package com.music.glide.load

import java.nio.charset.Charset
import java.security.MessageDigest

interface KKey {

    /**
     * 对数据生成唯一的固定长度的哈希值，用来保证数据的完整性和唯一性。
     * 常见的 MessageDigest 算法包括 MD5、SHA-1 和 SHA-256，
     * 它们会将任意长度的数据转换成特定长度的哈希值
     */

    fun updateDiskCacheKey(messageDigest: MessageDigest)

    /**
     * ===：比较引用，判断是否是同一个对象。
     * ==（即 equals）：比较内容，判断对象的数据是否相等
     */
    override fun equals(any: Any?): Boolean

    override fun hashCode(): Int

    companion object {

        private const val STRING_CHARSET_NAME = "UTF-8"

        val CHARSET = Charset.forName(STRING_CHARSET_NAME)
    }
}